/**
 * API数据类型定义
 * 用于描述接口的请求和响应数据结构
 */

/**
 * 基础响应结构
 * @typedef {Object} BaseResponse
 * @property {string} code - 返回码
 * @property {string} message - 消息说明
 * @property {*} result - 返回数据
 * @property {number} dataStamp - 时间戳
 */

/**
 * 老师详情数据结构
 * @typedef {Object} TeacherDetailVo
 * @property {number} id - 老师ID
 * @property {string} avatar - 头像
 * @property {string} nickname - 昵称
 * @property {string} wechatNo - 微信号
 * @property {number} educationLevel - 学历 1本科 2硕士 3博士 4高校老师
 * @property {string} highestEducationSchool - 最高学历学校
 * @property {string} major - 专业
 * @property {boolean} verified - 是否实名认证
 * @property {number} tutoringCount - 已辅导数
 * @property {string} experience - 科研经历
 * @property {string} selfIntroduction - 自我介绍
 * @property {Array<number>} goodAtItems - 擅长辅导项目
 * @property {number} score - 学员评分
 * @property {Array} commentList - 评价信息
 */

/**
 * 老师列表项数据结构
 * @typedef {Object} TeacherVo
 * @property {number} id - 老师ID
 * @property {string} avatar - 头像
 * @property {string} nickname - 昵称
 * @property {number} educationLevel - 学历
 * @property {string} highestEducationSchool - 最高学历学校
 * @property {string} major - 专业
 * @property {boolean} verified - 是否实名认证
 * @property {number} tutoringCount - 已辅导数
 * @property {string} experience - 科研经历
 * @property {string} selfIntroduction - 自我介绍
 * @property {Array<number>} goodAtItems - 擅长辅导项目
 */

/**
 * 老师编辑/认证数据结构
 * @typedef {Object} TeacherDto
 * @property {string} avatar - 头像
 * @property {string} nickname - 昵称
 * @property {string} phone - 手机号
 * @property {string} wechatNo - 微信号
 * @property {number} educationLevel - 学历
 * @property {string} highestEducationSchool - 最高学历学校
 * @property {string} major - 专业
 * @property {Array<number>} goodAtItems - 擅长辅导项目
 * @property {string} experience - 科研经历
 * @property {string} selfIntroduction - 自我介绍
 * @property {Array<PictureDto>} pictureList - 证件照片列表
 */

/**
 * 老师认证信息数据结构
 * @typedef {Object} TeacherVerifyVo
 * @property {number} id - 老师ID
 * @property {string} avatar - 头像
 * @property {string} nickname - 昵称
 * @property {string} phone - 手机号
 * @property {string} wechatNo - 微信号
 * @property {number} educationLevel - 学历
 * @property {string} highestEducationSchool - 最高学历学校
 * @property {string} major - 专业
 * @property {Array<number>} goodAtItems - 擅长辅导项目
 * @property {string} experience - 科研经历
 * @property {string} selfIntroduction - 自我介绍
 * @property {number} auditStatus - 审核状态 1审核中 2审核成功 3审核失败
 * @property {Array<PictureDto>} pictureList - 证件照片列表
 */

/**
 * 图片数据结构
 * @typedef {Object} PictureDto
 * @property {string} url - 图片URL
 * @property {number} picType - 图片类型
 */

/**
 * 订单详情数据结构
 * @typedef {Object} OrderDetailVo
 * @property {number} id - 订单ID
 * @property {string} orderNo - 订单号
 * @property {string} createTime - 订单创建时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} studyStage - 学习阶段
 * @property {number} studyPlace - 学习场所
 * @property {string} studyMajor - 学习专业
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} teacherLevel - 老师学历
 * @property {number} teacherAbroad - 老师是否留学
 * @property {string} requirementText - 需求描述
 * @property {string} comment - 备注说明
 */

/**
 * 学生端订单详情数据结构
 * @typedef {Object} StudentOrderDetailVo
 * @property {number} id - 订单ID
 * @property {string} orderNo - 订单号
 * @property {string} createTime - 订单创建时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} studyStage - 学习阶段
 * @property {number} studyPlace - 学习场所
 * @property {string} studyMajor - 学习专业
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} teacherLevel - 老师学历
 * @property {number} teacherAbroad - 老师是否留学
 * @property {string} requirementText - 需求描述
 * @property {string} comment - 备注说明
 * @property {number} deliveryCount - 投递人数
 * @property {boolean} modifyBtnShow - 修改按钮是否可用
 */

/**
 * 学生端订单列表项数据结构
 * @typedef {Object} StudentOrderListVo
 * @property {number} id - 订单ID
 * @property {string} orderNo - 订单号
 * @property {string} createTime - 订单创建时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} deliverCount - 报名人数
 * @property {Array<string>} avatarList - 报名人头像列表
 */

/**
 * 老师端订单列表项数据结构
 * @typedef {Object} TeacherOrderListVo
 * @property {number} id - 订单ID
 * @property {string} orderNo - 订单号
 * @property {string} createTime - 订单创建时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {string} studyMajor - 学习专业
 * @property {string} studentName - 学生姓名
 */

/**
 * 分页响应数据结构
 * @typedef {Object} PageResponse
 * @property {Array} records - 数据列表
 * @property {number} total - 总数
 * @property {number} current - 当前页
 * @property {number} size - 每页数量
 * @property {number} pages - 总页数
 */

/**
 * 分页请求参数结构
 * @typedef {Object} PageParams
 * @property {number} current - 当前页码
 * @property {number} size - 每页数量
 */

/**
 * 投递记录数据结构
 * @typedef {Object} DeliveryRecordDto
 * @property {number} requirementId - 需求ID
 */

/**
 * 需求数据结构
 * @typedef {Object} RequirementDto
 * @property {number} tutoringItem - 辅导项目 1论文 2作业 3保研 4考研 5其他
 * @property {number} studyStage - 学习阶段 1本科 2硕士 3博士
 * @property {number} studyPlace - 学习场所 1国内 2国外
 * @property {string} studySchool - 学习学校
 * @property {string} studyMajor - 学习专业
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} teacherLevel - 老师学历 1本科 2硕士 3博士 4高校老师
 * @property {number} teacherAbroad - 老师是否留学 1是 2不要求
 * @property {string} requirementText - 需求描述
 * @property {string} comment - 备注说明
 */

/**
 * 需求详情数据结构
 * @typedef {Object} RequirementVo
 * @property {number} id - 需求ID
 * @property {string} createTime - 需求发布时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} studyStage - 学习阶段
 * @property {number} studyPlace - 学习场所
 * @property {string} studyMajor - 学习专业
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} teacherLevel - 老师学历
 * @property {number} teacherAbroad - 老师是否留学
 * @property {string} requirementText - 需求描述
 * @property {string} comment - 备注说明
 * @property {number} deliveryCount - 投递人数
 * @property {boolean} deliveryAble - 是否可投递
 */

/**
 * 需求列表项数据结构
 * @typedef {Object} RequirementListVo
 * @property {number} id - 需求ID
 * @property {string} avatar - 头像
 * @property {string} nickname - 昵称
 * @property {string} createTime - 需求发布时间
 * @property {number} tutoringItem - 辅导项目
 * @property {number} studyStage - 学习阶段
 * @property {string} studyMajor - 学习专业
 * @property {number} budgetMin - 最低预算
 * @property {number} budgetMax - 最高预算
 * @property {number} teacherLevel - 老师学历
 * @property {string} requirementText - 需求描述
 * @property {number} deliveryCount - 投递人数
 * @property {boolean} deliveryAble - 是否可投递
 */

// 导出类型定义（用于JSDoc）
export const Types = {
  BaseResponse: 'BaseResponse',
  TeacherDetailVo: 'TeacherDetailVo',
  TeacherVo: 'TeacherVo',
  TeacherDto: 'TeacherDto',
  TeacherVerifyVo: 'TeacherVerifyVo',
  PictureDto: 'PictureDto',
  OrderDetailVo: 'OrderDetailVo',
  StudentOrderDetailVo: 'StudentOrderDetailVo',
  StudentOrderListVo: 'StudentOrderListVo',
  TeacherOrderListVo: 'TeacherOrderListVo',
  PageResponse: 'PageResponse',
  PageParams: 'PageParams',
  DeliveryRecordDto: 'DeliveryRecordDto',
  RequirementDto: 'RequirementDto',
  RequirementVo: 'RequirementVo',
  RequirementListVo: 'RequirementListVo'
}

export default Types
